﻿using LM.InterfacesFabricas.DTOs;
using LM.Negocio.Objetos;
using System.Collections.Generic;
using System.Linq;

namespace LM.Negocio.Utilidades
{
    public static class Conversores
    {
        public static IList<DtoItemTabelaDePreco> ToDtosItensTabelaDePreco( this IList<ItemTabelaDePreco> origens )
        {
            IList<DtoItemTabelaDePreco> lista = new List<DtoItemTabelaDePreco>();
            origens.ToList().ForEach( e => lista.Add( e.ToDtoItemTabelaDePreco() ) );
            return lista;
        }

        public static DtoItemTabelaDePreco ToDtoItemTabelaDePreco( this ItemTabelaDePreco origem )
        {
            return new DtoItemTabelaDePreco()
            {
                Codigo = origem.Codigo,
                PeriodoAdicional = origem.PeriodoAdicional,
                PeriodoInicial = origem.PeriodoInicial,
                CustoPeriodoAdicional = origem.CustoPeriodoAdicional,
                CustoPeriodoInicial = origem.CustoPeriodoInicial,
                Domingo = origem.Domingo,
                Segunda = origem.Segunda,
                Terca = origem.Terca,
                Quarta = origem.Quarta,
                Quinta = origem.Quinta,
                Sexta = origem.Sexta,
                Sabado = origem.Sabado,
                Matutino = origem.Matutino,
                Vespertino = origem.Vespertino,
                Noturno = origem.Noturno,
                TabelaPrecoId = origem.TabelaPrecoId,
                TipoVagaId = origem.TipoVagaId,
                TipoVeiculoId = origem.TipoVeiculoId,
                TabelaPreco = origem.TabelaPreco.ToDtoTabelaPreco(),
                Vaga = origem.Vaga.ToDtoVaga(),
                TipoVeiculo = origem.TipoVeiculo.ToDtoTipoDeVeiculo()
            };
        }

        public static DtoTabelaPreco ToDtoTabelaPreco( this TabelaDePreco origem )
        {
            return new DtoTabelaPreco()
            {
                Codigo = origem.Codigo,
                DataFinal = origem.DataFinal,
                DataInicial = origem.DataInicial,
                Nome = origem.Nome
            };
        }

        public static DtoVaga ToDtoVaga( this Vaga origem )
        {
            return new DtoVaga()
            {
                Codigo = origem.Codigo,
                Numero = origem.Numero,
                Tipo = origem.Tipo
            };
        }

        public static DtoTipoDeVeiculo ToDtoTipoDeVeiculo( this TipoDeVeiculo origem )
        {
            return new DtoTipoDeVeiculo()
            {
                Codigo = origem.Codigo,
                Descricao = origem.Descricao
            };
        }

        public static DtoLocacao ToDtoLocacao(this Locacao origem)
        {
            return new DtoLocacao()
            {
                Codigo = origem.Codigo,
                NomeCliente = origem.NomeCliente,
                Cpf = origem.Cpf,
                DataHoraEntrada = origem.DataHoraEntrada,
                DataHoraSaida = origem.DataHoraSaida,
                Status = origem.Status,
                Total = origem.Total,
                Desconto = origem.Desconto,
                Cliente = origem.Cliente.ToDtoCliente(),
                Veiculo = origem.Veiculo.ToDtoVeiculo(),
                Dependente = origem.Dependente.ToDtoDependente(),
                Vaga = origem.Vaga.ToDtoVaga(),
                TabelaPreco = origem.TabelaPreco.ToDtoTabelaPreco()
            };
        }

        public static DtoCliente ToDtoCliente(this Cliente origem)
        {
            return new DtoCliente();
        }

        public static DtoVeiculo ToDtoVeiculo(this Veiculo origem)
        {
            return new DtoVeiculo();
        }

        public static DtoDependente ToDtoDependente(this Dependente origem)
        {
            return new DtoDependente();
        }

    }
}
